import cv2
import os

# 1.将视频切帧成图片 每秒2帧
# 速度有些慢
# 可以用这个命令快些  ffmpeg -i C.mp4 -r 3 images/frame_%05d.jpg

video_path = './test_video/D02_20250218080943.mp4'
save_dir = './frames'
os.makedirs(save_dir, exist_ok=True)

cap = cv2.VideoCapture(video_path)
# 计算实际跳帧间隔（新增独立计数器）

fps = cap.get(cv2.CAP_PROP_FPS)
frame_rate = 2  # 每秒切2帧
skip_frames = int(fps // frame_rate) or 1  # 使用整数除法防止小数

frame_idx = 0
current_frame = 0  # 新增：实际处理的帧计数器

while True:
    ret, frame = cap.read()
    if not ret:
        break
    
    # 修改判断条件为当前实际帧数（修复逻辑错误）
    if current_frame % skip_frames == 0:
        print(f'Processing frame {frame_idx}... {save_dir}/frame_{frame_idx:04d}.jpg')
        cv2.imwrite(f'{save_dir}/frame_{frame_idx:04d}.jpg', frame)
        frame_idx += 1  # 严格按保存次数递增
    
    current_frame += 1  # 每次循环都递增实际帧数


cap.release()




